{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time series example with advanced output writer usage"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This tutorial shows how specific results are extracted with the time series module in pandapower.\n",
    "\n",
    "In this example we define the output writer to log the following:\n",
    "* The maximum voltage of each medium voltage bus (vn_kv > 1.0 kV and vn_kv < 70.0) in an example grid\n",
    "* The sum of all p_kw values for every high voltage bus (vn_kv > 70.0 and vn_kv < 380.0)\n",
    "\n",
    "This time series calculation requires the minimum following inputs:\n",
    "* pandapower net\n",
    "* the time series (a Dataframe for example)\n",
    "* a pre defined output writer\n",
    "\n",
    "If you have just read the simple time_series jupyter notebook example. You can directly proceed to the section of create_output_writer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we need some imports. Specific for this example are:\n",
    "* ConstControl -> \"constant\" controllers, which change the P and Q values of sgens and loads\n",
    "* DFData -> The Dataframe Datasource. This Dataframe holds the time series to be calculated\n",
    "* OutputWriter -> The output writer, which is required to write the outputs to the hard disk\n",
    "* run_timeseries -> the \"main\" time series function, which basically calls the controller functions (to update the P, Q of the ConstControllers) and runpp."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import tempfile\n",
    "import pandapower as pp\n",
    "from pandapower.control import ConstControl\n",
    "from pandapower.timeseries import DFData\n",
    "from pandapower.timeseries import OutputWriter\n",
    "from pandapower.timeseries.run_time_series import run_timeseries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we look at the time series example function. It follows these steps:\n",
    "1. create a simple test net\n",
    "2. create the datasource (which contains the time series P values)\n",
    "3. create the controllers to update the P values of the load and the sgen\n",
    "4. define the output writer and desired variables to be saved\n",
    "5. call the main time series function to calculate the desired results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def timeseries_example(output_dir):\n",
    "    # 1. create test net\n",
    "    net = simple_test_net()\n",
    "\n",
    "    # 2. create (random) data source\n",
    "    n_timesteps = 10\n",
    "    profiles, ds = create_data_source(n_timesteps)\n",
    "    # 3. create controllers (to control P values of the load and the sgen)\n",
    "    net = create_controllers(net, ds)\n",
    "\n",
    "    # time steps to be calculated. Could also be a list with non-consecutive time steps\n",
    "    time_steps = range(0, n_timesteps)\n",
    "\n",
    "    # 4. the output writer with the desired results to be stored to files.\n",
    "    ow = create_output_writer(net, time_steps, output_dir)\n",
    "\n",
    "    # 5. the main time series function\n",
    "    run_timeseries(net, time_steps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We start by creating a simple example pandapower net consisting of five buses, a transformer, three lines, a load and a sgen. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def simple_test_net():\n",
    "    \"\"\"\n",
    "    simple net that looks like:\n",
    "\n",
    "    ext_grid b0---b1 trafo(110/20) b2----b3 load\n",
    "                                    |\n",
    "                                    |\n",
    "                                    b4 sgen\n",
    "    \"\"\"\n",
    "    net = pp.create_empty_network()\n",
    "    pp.set_user_pf_options(net, init_vm_pu = \"flat\", init_va_degree = \"dc\", calculate_voltage_angles=True)\n",
    "\n",
    "    b0 = pp.create_bus(net, 110)\n",
    "    b1 = pp.create_bus(net, 110)\n",
    "    b2 = pp.create_bus(net, 20)\n",
    "    b3 = pp.create_bus(net, 20)\n",
    "    b4 = pp.create_bus(net, 20)\n",
    "\n",
    "    pp.create_ext_grid(net, b0)\n",
    "    pp.create_line(net, b0, b1, 10, \"149-AL1/24-ST1A 110.0\")\n",
    "    pp.create_transformer(net, b1, b2, \"25 MVA 110/20 kV\", name='tr1')\n",
    "    pp.create_line(net, b2, b3, 10, \"184-AL1/30-ST1A 20.0\")\n",
    "    pp.create_line(net, b2, b4, 10, \"184-AL1/30-ST1A 20.0\")\n",
    "\n",
    "    pp.create_load(net, b2, p_mw=20., q_mvar=10., name='load1')\n",
    "    pp.create_sgen(net, b4, p_mw=20., q_mvar=0.15, name='sgen1')\n",
    "\n",
    "    return net"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data source is a simple pandas DataFrame. It contains random values for the load and the sgen P values (\"profiles\"). Of course your time series values should be loaded from a file later on.\n",
    "Note that the profiles are identified by their column name (\"load1_p\", \"sgen1_p\"). You can choose here whatever you prefer.\n",
    "The DFData(profiles) converts the Dataframe to the required format for the controllers. Note that the controller"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_data_source(n_timesteps=10):\n",
    "    profiles = pd.DataFrame()\n",
    "    profiles['load1_p'] = np.random.random(n_timesteps) * 20.\n",
    "    profiles['sgen1_p'] = np.random.random(n_timesteps) * 20.\n",
    "\n",
    "    ds = DFData(profiles)\n",
    "\n",
    "    return profiles, ds"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "create the controllers by telling the function which element_index belongs to which profile. In this case we map:\n",
    "* first load in dataframe (element_index=[0]) to the profile_name \"load1_p\"\n",
    "* first sgen in dataframe (element_index=[0]) to the profile_name \"sgen1_p\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_controllers(net, ds):\n",
    "    ConstControl(net, element='load', variable='p_mw', element_index=[0],\n",
    "                 data_source=ds, profile_name=[\"load1_p\"])\n",
    "    ConstControl(net, element='sgen', variable='p_mw', element_index=[0],\n",
    "                 data_source=ds, profile_name=[\"sgen1_p\"])\n",
    "    return net"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "create the output writer. Instead of saving the whole net (which takes a lot of time), we extract only pre defined outputs.\n",
    "In this case we:\n",
    "* save the results to the folder output_dir\n",
    "* write the results to \".xls\" Excel files. (Possible are: .json, .p, .csv - You should avoid Excel since it is slow)\n",
    "* log sum of real power (\"p_mw\") for each high voltage (hv) bus\n",
    "* log the maximum voltage magnitude (\"vm_pu\") of each medium voltage (mv) bus"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_output_writer(net, time_steps, output_dir):\n",
    "    ow = OutputWriter(net, time_steps, output_path=output_dir, output_file_type=\".xls\", log_variables=list())\n",
    "    \n",
    "    # create a mask to get the indices of all the hv buses in the grid \n",
    "    mask_hv_buses = (net.bus.vn_kv > 70.0) & (net.bus.vn_kv < 380.0)\n",
    "    hv_busses_index = net.bus.loc[mask_hv_buses].index\n",
    "    # create a mask to get the indices of all the mv buses in the grid\n",
    "    mask_mv_buses = (net.bus.vn_kv > 1.0) & (net.bus.vn_kv < 70.0)\n",
    "    mv_busses_index = net.bus.loc[mask_mv_buses].index\n",
    "    # now define the output writer, so that it gets the indices and specify the evaluation functions\n",
    "    # since we want the maximum voltage of all mv buses, we provide the indices of the mv buses and the maximum \n",
    "    # function np.max. The variable \"eval_name\" is free to chose and contains the name of the column in\n",
    "    # which the results are saved. \n",
    "    ow.log_variable('res_bus', 'p_mw', index=hv_busses_index, eval_function=np.sum, eval_name=\"hv_bus_sum_p\")\n",
    "    ow.log_variable('res_bus', 'vm_pu', index=mv_busses_index, eval_function=np.max, eval_name=\"mv_bus_max\")\n",
    "    return ow"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now lets execute the code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Results can be found in your local temp folder: /tmp/time_series_example\n",
      "Progress: |██████████████████████████████████████████████████| 100.0% Complete\n",
      "\n"
     ]
    }
   ],
   "source": [
    "output_dir = os.path.join(tempfile.gettempdir(), \"time_series_example\")\n",
    "print(\"Results can be found in your local temp folder: {}\".format(output_dir))\n",
    "if not os.path.exists(output_dir):\n",
    "    os.mkdir(output_dir)\n",
    "timeseries_example(output_dir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If everything works you should have the desired results the temporary folder of your os (see print statement above).\n",
    "In this folder two excel files should have appeared containing the desired output for each of the ten time steps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot results\n",
    "Now let us plot the results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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ek/2j6bBmndgVLWLQLheyhxo2U6PbRo18smkUdCiEwydftZ9xcXFZGRkUFhYaElMYWFhbN++3ZJr18SuMe3bt4/IyEgCAz30CdOwn/JJKYkvwYAbIKSje6936hjsWALD74aAZu69lpfzyaRRnYyMDEJCQujevTvKglkReXl5hISEePy6tbFjTLm5uRQVFZGRkUF0dLTV4RhWUUq3Nt66EL57Fq6d6d7rbfkEyopN15QTmsx0ocLCQtq1a2dJwjCcp5SiXbt2lrUIDRtp1xNGPqhXm01f495rpcyBToOgY3/3XscHNJmkAZiE4SXM38moMPYRCOkMSx7VKza4w+HNcGQLDDYV4M5oUknDMAwvExQME57XBbnJ77nnGilzwb+ZHjsx6mSShoekpaXRv//ZTd9nn32W1157zaKInONsjH/+85/p1asXMTExfP311x6IzGgy+l8P3cbAsufh9HHXnrukCDbPh5hJejdBo04maRiNtm3bNj7++GN++uknli5dyv33309pqZu6EoymRymY9IpefXaZizdE2vkVFByHIdUuh2dUo8nMnqrsuS9+YtuhXJees2/nUJ65sl+Dnx8XF8eIESNISEggJyeH//znP4wdO5b33nuPRYsWcfr0afbs2cO1117LK6+8AsB9993HunXrKCgo4IYbbuC5554DoHv37tx8880kJCRQXFzMrFmz+O1vf8vu3bt57LHHuPfeewF4/fXXWbhwIWfOnOHaa6+teP4LL7zA7NmziYqKIjw8nKFDa1+4beHChUybNo2goCCio6Pp1asXa9euZeTIkQ1+PQzjLB366emwa97R0+k7DXLNeTfO1WMmnqw893KmpWEjJSUlrF27lr///e8Vb+AAKSkpzJs3jy1btjBv3jwOHDgA6Df39evXs3nzZpYvX87mzZsrnhMVFUVSUhJjx45l+vTpfPrpp6xevZqnn34agG+++YY9e/awdu1aUlJSSE5OZsWKFSQnJ/Pxxx+zceNGPv/8c9atW1dxzpkzZzJz5rlTHw8ePEhU1M/7ZUVGRnLw4EGXvz5GExf3W118t+QxcMU21eX75QyaBn7+jT9fE9EkWxqNaRE0VE0zgirff9111wEwdOhQ9u/fX3H/xRdfTFhYGAB9+/YlLS2NqKgo5s+fz6xZsygpKeHw4cNs27aNgQMHAnDVVVcBMGDAAPLz8wkJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline  \n",
    "\n",
    "# voltage results\n",
    "vm_pu_file = os.path.join(output_dir, \"res_bus\", \"vm_pu.xls\")\n",
    "vm_pu = pd.read_excel(vm_pu_file)\n",
    "vm_pu.plot(label=\"vm_pu\")\n",
    "plt.xlabel(\"time step\")\n",
    "plt.ylabel(\"voltage mag. [p.u.]\")\n",
    "plt.title(\"Voltage Magnitude\")\n",
    "plt.grid()\n",
    "plt.show()\n",
    "\n",
    "\n",
    "# p_mw results\n",
    "p_mw_file = os.path.join(output_dir, \"res_bus\", \"p_mw.xls\")\n",
    "p_mw = pd.read_excel(p_mw_file)\n",
    "p_mw.plot(label=\"p_mw\")\n",
    "plt.xlabel(\"time step\")\n",
    "plt.ylabel(\"P [MW]\")\n",
    "plt.title(\"Real Power at Buses\")\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
